AlphaDAO Overview

Description

An introduction to the goals and architecture behind AlphaDAO.

Alpha Anywhere Data Access Objects (AlphaDAO)

AlphaDAO provides Xbasic program access to a variety of data sources including SQL databases such as Microsoft SQL Server, Oracle, MySQL as well as Microsoft Access; NoSQL databases such as MongoDB; and other data sources including files (static JSON), Salesforce, Google Sheets, Quickbooks, OData, and more. In addition, a custom data source can be defined using Xbasic.

Additional functions facilitate data definition, security and data manipulation. Several objects including SQL::Connection, SQL::TableInfo, and SQL::ResultSet make it easy to view and modify SQL databases from within Xbasic. In many cases, an application can be written without knowing the specific SQL syntax of the target database implementation.

This document presents a description of the SQL functionality as a basis for user documentation. It is intended to document the technical details of the features as visible to the Xbasic developer.

Goals

The goals of this Enterprise software are to allow users to:

  • Use most (if not all) of the existing "table" tools (browses, forms, reports, labels, ...) interfaces against SQL database tables and queries.
  • Easily move data into and out of Alpha Anywhere and even from one SQL database to another without significant loss of schema information.
  • Create new SQL queries that are portable across different SQL databases without having to become an expert on each SQL dialect.
  • Access a rich user interface that makes creating and maintaining SQL tables part of the Alpha Anywhere experience.
  • Create Xbasic scripts to execute SQL and manipulate the results (SELECT, INSERT, UPDATE, DELETE statements AND stored procedures).
  • Code to the target SQL database without Alpha Anywhere limiting the syntax you use.

How is This Done (The Architecture)?

We have created an Enterprise software which is very tightly integrated into Xbasic and somewhat agnostic with respect to specific database APIs and SQL dialects. There are about a dozen objects for working with SQL in Xbasic, including SQL::Connection, SQL::Query, SQL::Statement, SQL::TableInfo, SQL::ResultSet.

The software is extensible with two facilities that complement each other:

Syntax Scripts

Xbasic scripts that "know" a specific dialect of SQL and can generate SQL, map data types, and describe schema information in a generic way.

Drivers

These dynamically loadable DLLs make it possible to tightly couple to the appropriate database vendor API (or customize it) to maximize performance.

A number of dialogs make point-and-click linking, querying, importing and exporting using SQL easy to do.

Lots of high level functions to allow you to manipulate result sets, maintain tables, pass arguments to SQL by name, call stored procedures, describe existing database schemas and even generate SQL on the fly so you are not limited by your imagination.

Since SQL is not always portable, the SQL::Query and SQL::Statement objects let you create a SQL statement that is validated against our own parser and then translated for the target database syntax as needed. This facility handles naming conventions and man functions that have different implementations across databases.

See Also